package cn.xeblog.plugin.game.gobang;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * AI服务接口
 *
 * @author anlingyi
 * @date 2021/11/1 3:26 下午
 */
public interface AIService {

  /**
   * 获取AI棋位
   *
   * @param chessData 已下棋子数据
   * @param point     对手棋位
   * @return AI落子点位
   */
  Point getPoint(int[][] chessData, Point point);

  /**
   * AI配置
   */
  @Data
  @NoArgsConstructor
  @AllArgsConstructor
  class AIConfig {

    /**
     * 搜索深度
     */
    private int depth;
    /**
     * 最大启发式节点数
     */
    private int maxNodes;
    /**
     * debug
     */
    private boolean debug;
    /**
     * 算杀 0.不开启 1.VCT(连续活三) 2.VCF(冲四活三)
     */
    private int vcx;
    /**
     * 算杀深度
     */
    private int vcxDepth;
  }

}
